home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / t_os / tomcon / tomcon1.c < prev    next >
C/C++ Source or Header  |  1991-10-18  |  2KB  |  81 lines

  1. #define PROGRAM \
  2. "TOWNS-MENU コンソール・ドライバ V0.04 " __DATE__ " by Y.Kurihara (Nif PDC01620)"
  3.  
  4. /*
  5.     TOMCON  
  6.     TOMCON  <コマンド>
  7.     TOMCON  <X座標> <Y座標> <桁数> <行数>
  8.     TOMCON  <X座標> <Y座標> <桁数> <行数>  <コマンド>
  9.  
  10.     指定範囲をコンソールにして COMMAND.COM を起動する。
  11.     <コマンド>が指定されている時はコマンドを実行する。
  12.  
  13.     *フォントCGの使用方法は ORICON (MIYAZAKI氏作) を参考にしました。
  14.     *本プロクラムは LSI C-86 Ver 3.20 試食版 でコンパイルしました。
  15. */
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include <jctype.h>
  21. #include <dos.h>
  22. #include "tomcon.h"
  23.  
  24. char *getcmd( void )            /* PSPのコマンドラインを取得 */
  25. {
  26.     static char buff[ 128 ];
  27.     char far *ptr,*p = buff;
  28.     int n;
  29.  
  30.     ptr = MK_FP( _psp,0x80 );
  31.     n = *ptr++;
  32.     while( n-- > 0 )  *p++ = *ptr++;
  33.     *p = 0;
  34.     return( buff );
  35. }
  36.  
  37. char *getpara( char **cmd )        /* 文字列からパラメータを取得 */
  38. {
  39.     char *p,*s;
  40.  
  41.     p = s = *cmd;
  42.     if( *p == 0 )  return( p );
  43.     while( *s && !isspace( *s ) )  s++;
  44.     if( *s )  *s++ = 0;
  45.     while( *s &&  isspace( *s ) )  s++;
  46.     *cmd = s;
  47.     return( p );
  48. }
  49.  
  50. main()
  51. {
  52.     char *cmd;
  53.     int ret;
  54.  
  55.     cmd = getcmd();
  56.     while( isspace( *cmd ) )  cmd++;
  57.     if( isdigit( *cmd ) ) {
  58.         x0 = atoi( getpara( &cmd ) );
  59.         y0 = atoi( getpara( &cmd ) );
  60.         xl = atoi( getpara( &cmd ) );
  61.         yl = atoi( getpara( &cmd ) );
  62.         if( x0 < 0 || x0 > 78 )  x0 = X0;
  63.         if( xl < 1 || x0 + xl > 80 )  xl = 80 - x0;
  64.         if( y0 < 0 || y0 > 78 )  y0 = Y0;
  65.         if( yl < 1 || y0 + yl > 30 )  yl = 30 - y0;
  66.     }
  67.  
  68.     set_int29();
  69.     putchar( 0x0c );
  70.     if( *cmd ) {
  71.         ret = system( cmd );
  72.     } else {
  73.         puts( PROGRAM );
  74.         ret = system( "" );
  75.     }
  76.  
  77.     reset_int29();
  78.     exit( ret );
  79. }
  80.  
  81.